/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-04-09
 * Time: 17:41
 *
 * 请实现笔记本电脑使用USB鼠标、USB键盘的例子
 * 1. USB接口：包含打开设备、关闭设备功能
 * 2. 笔记本类：包含开机功能、关机功能、使用USB设备功能
 * 3. 鼠标类：实现USB接口，并具备点击功能
 * 4. 键盘类：实现USB接口，并具备输入功能
 */
interface USB{
    //接口类里面的方法默认是抽象方法public abstract
    //不允许有具体方法的实现
    void open();//打开设备
    void close();//关闭设备
//    default void a(){//如果要有方法的实现必须加上default修饰
//    }
}
class Mouse implements USB{//类与接口之间利用implements修饰，说明Mouse能够实现USB接口

    @Override
    public void open() {
        System.out.println("打开鼠标！！！");
    }

    @Override
    public void close() {
        System.out.println("关闭鼠标！！！");
    }

    public void click() {
        System.out.println("点击鼠标！！！");
    }
}

class KeyBoard implements USB{
    //如果某个类要接口的功能必须重写USB的所有方法

    @Override
    public void open() {
        System.out.println("打开键盘！！！");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘！！！");
    }

    public void inPut() {
        System.out.println("敲代码！！！");
    }
}

class Computer {
    public void openDevice() {
        System.out.println("打开电脑设备！！！");
    }
    public void closeDevice() {
        System.out.println("关闭电脑设备！！！");
    }
    //使用设备
    public void useDevice(USB usb) {
        usb.open();
        if(usb instanceof Mouse) {
            Mouse mouse = (Mouse)usb;
            mouse.click();
        } else if(usb instanceof KeyBoard) {
            KeyBoard keyBoard = (KeyBoard)usb;
            keyBoard.inPut();
        }
        usb.close();
    }
}

public class TestDemo {

    public static void main(String[] args) {
       Computer computer = new Computer();
       computer.openDevice();//打开设备
       computer.useDevice(new Mouse());
       computer.useDevice(new KeyBoard());
       computer.closeDevice();//关闭设备
    }
}
